"""
@File    :   enums.py
@Time    :   2024/02/22 22:36:46
@Author  :   Qrj
@Email   :   923207736@qq.com
@description   :   系统配置相关枚举类
"""

from enum import Enum, unique


@unique
class PasswordStrengthEnum(Enum):
    """密码强度枚举类"""

    low = "低"
    medium = "中"
    high = "高"


class PasswordStrengthRegexpEnum(Enum):
    """密码强度正则表达式枚举类"""

    low = r"^.(?!.*\s)"  # 动态长度的字符串, 不能有空格
    medium = r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?!.*\s)."  # 动态长度的至少包含一个小写字母、一个大写字母、一个数字的字符串, 不能有空格
    high = r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z0-9])(?!.*\s)."  # 动态长度的至少包含一个小写字母、一个大写字母、一个数字以及一个特殊符号的字符串, 不能有空格


class PasswordStrengthRegexpValidateErrorMsgEnum(Enum):
    """密码强度正则表达式验证错误时对应的错误信息枚举类"""

    low = "密码要求为{}到{}长度且不包含空格的字符串"
    medium = "密码要求为至少包含一个小写字母、一个大写字母、一个数字的{}到{}长度且不包含空格的字符串"
    high = "密码要求为至少包含一个小写字母、一个大写字母、一个数字以及一个特殊符号的{}到{}长度且不包含空格的字符串"


@unique
class LoginFailureLockoutPolicyEnum(Enum):
    """登录失败锁定策略"""

    no_lock = "不锁定"
    lock_ip = "锁定IP"
    lock_username = "锁定用户名"
    lock_ip_username = "锁定IP与用户名"
